/*
STL 常用算数生成算法
算术生成算法属于小型算法，使用时包含的头文件为 #include <numeric>
算法简介
  accumulate  // 计算容器元素累计和
  fill  // 向容器中添加元素

accumulate
  计算期间内容器元素累计和
  函数原型
    accumulate(iterator beg, iterator end, value);  // value 起始值 返回的结果为 value + [beg, end)区间内元素的和

fill
  向容器中填充指定元素
  函数原型
    fill(iterator beg, iterator end, value);  // value 填充的值
*/

#include <iostream>
#include <numeric>
#include <vector>
using namespace std;

// accumulate
void test_accumulate()
{
    cout << "------------- accumulate --------------" << endl;
    vector<int> v = {1, 2, 3, 2, 3, 4, 5, 5};
    int total = accumulate(v.begin(), v.end(), 0);
    cout << total << endl;
}

// fill
void test_fill()
{
    vector<int> v;
    v.resize(10);
    fill(v.begin(), v.end(), 9);
    for (auto it = v.begin(); it != v.end(); it++)
        cout << *it << " ";
    cout << endl;
}

int main()
{
    test_accumulate();
    test_fill();

    return 0;
}